#!/usr/bin/perl

$a = 'hi there';
$a_ref = \$a;

@b = {'this', 'is', 'an', 'array'};
$b_ref = \@b;

%c = {first_name=>'Fred', last_name=>'Jones'};
$c_ref = \%c;

# 在perl中，引用（reference）是指向数据结构的指针。可以用反斜杠创建已存在的数据结构的引用。
# 一旦创建了引用，就可以拷贝他，就像拷贝其他变量一样，或者将其装入数组或散列数组。
# 当想取得包含在引用内部的数据时，可以使用对应于其内容的前缀简介引用（dereference）：

$a = $$a_ref;
@b = @$b_ref;
%c = %$c_ref;

# 可以使用->语法来索引数组和散列数组引用，而不必简介引用整个引用：
$b_ref->[2];    #'an'
$c_ref->{last_name};    #'Jones'

#也可以使用下面的语法直接给匿名的、未命名的数组和散列创建引用：
$anonymous_array = ['this', 'is', 'an', 'anonymous', 'array'];
$anonymous_hash = {first_name=>'Jone', last_name=>'Doe'};


# 对象也是一个引用，只不过具有额外的位。对象带有 “什么模块创建了它” 的相关信息，它以这种被神圣化（blessed）而居于特定模块的软件包。
# 对象不同于一般引用的是它具有方法。

$object->print_record(encoding => 'EBCDIC');
# => 符号在perl中作为 ’,‘ 的同义词而被接受。
# 它使两个参数之间的关系更加清楚，而且它还会自动的把左边的参数用引号括起来。